// passport验证权限的类库
import passport from 'koa-passport'
// 本地策略
import LocalStrategy from 'passport-local'
// 查用户表
import UserModel from '../../dbs/models/users'


passport.use(new LocalStrategy(async function (username, password, done) {
  // 查询条件
  // console.log('密码：', password)
  // console.log('用户：', username)
  let where = {
    studentNum: username
  };
  //  查数据
  let result = await UserModel.findOne(where)
  // console.log('result', result)
  // 验证密码是否为空
  if (result != null) {
    // console.log('1111')
    // 验证密码是否和用户输入的相同
    if (result.password === password) {
      // console.log('2222')
      return done(null, result)
    } else {
      // console.log('3333')
      return done(null, false, '密码错误')
    }
  } else {
    // console.log('4444')
    // 如果是空的
    return done(null, false, '用户不存在')
  }
}))
// 序列化，每次都通过Session来完成，serializeUser 在用户登录验证成功以后将会把用户的数据存储到 session 中
passport.serializeUser(function (user, done) {
  done(null, user)
})
// 反序列化，deserializeUser 在每次请求的时候，会从Session中读取这个对象
passport.deserializeUser(function (user, done) {
  return done(null, user)
})

export default passport
